using System;
using System.Collections.Generic;
using System.Xml;
using System.Collections.ObjectModel;

namespace planning
{
	public class Matiere : Ressource
	{
		// ----- ATTRIBUTS -----
		private string titre;
		private ICollection<Enseignant> enseignants = new ObservableCollection<Enseignant>();

		// ----- CONSTRUCTEURS -----
		public Matiere()
		{
			// Start of user code for default constructor
			// End of user code for default constructor
		}

		// ----- ACCESSEURS -----
		public string Titre
		{
			get { return titre; }
			set { titre = value; ObjectChanged("titre"); }
		}

		public ICollection<Enseignant> Enseignants
		{
			get { return enseignants; }
			set { enseignants = value; ObjectChanged("enseignants"); }
		}


		static Dictionary<string, Matiere> references = new Dictionary<string, Matiere>();

		public static new Matiere fromXml(XmlNode node)
		{
			if(node.SelectSingleNode("@ref") != null)
				return references[node.SelectSingleNode("@ref").Value];

			Matiere matiere = new Matiere();

			if(node.SelectSingleNode("@id") != null) {
				references.Add(node.SelectSingleNode("@id").Value, matiere);
			}

			matiere.Titre = node.SelectSingleNode("@titre").Value;
			foreach (XmlNode subElement in node.SelectNodes("enseignants/*"))
			{
				Enseignant subObject = Enseignant.fromXml(subElement);
				matiere.enseignants.Add(subObject);
			}

			

			return matiere;

		}

	}

}
